type Unshift<T, U> = T extends any[] ? [U, ...T] : never
